#ifndef CLAddThreadPool_H
#define CLAddThreadPool_H

#include <sstream>
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <unistd.h>
#include <string.h>
#include "CLThread.h"
#include "CLMessage.h"
#include "CLCriticalSection.h"
#include "CLMsgLoopManagerForSTLqueue.h"
#include "CLMessageObserver.h"
#include "CLExecutiveFunctionForMsgLoop.h"
#include "CLExecutiveNameServer.h"
#include "CLExecutiveCommunication.h"
#include "CLThreadForMsgLoop.h"
#include "CLMsgProcessorType.h"

using namespace std;

class CLAddThreadPool
{
public:
	CLAddThreadPool(int computeThreadNumber);
	virtual ~CLAddThreadPool();
	
	void Run();
	
private:
	CLAddThreadPool(const CLAddThreadPool&);
	CLAddThreadPool& operator=(const CLAddThreadPool&);
	
private:
	int computeThreadNumber;
	CLThreadForMsgLoop *userThread;
	CLThreadForMsgLoop *masterThread;
	list<CLThreadForMsgLoop*> computeThreadList;
};

#endif